#ifndef RCORE_H_INCLUDED
#define RCORE_H_INCLUDED

#include <vector>
#include "gcore.h"
//#include "stateManager.h"
//#include "state.h"
#include <hge.h>
#include <hgesprite.h>
#include <hgefont.h>
#include "RenderObject.h"

class RenderCore : public gcore::Singleton<RenderCore>
{
	public:
		bool Start();
		void Shutdown();
		void init();
		RenderCore();
		~RenderCore();
		static RenderCore& getSingleton(void);
		static RenderCore* getSingletonPtr(void);
		HWND GetHWND ();
		unsigned int getHeight();
		unsigned int getWidth();
		unsigned int getDepth();
		void boom();

		float GetDelta() { return hge->Timer_GetDelta(); }

		bool registerObj( RenderObject *obj );
//		bool changeFrameFunc( State state );

	private:
		static bool staticRenderFunc();
		static bool staticFrameFunc();

		bool RenderFunc();
		bool FrameFunc();


		HGE *hge;

		std::vector<RenderObject*> objList;
		hgeFont* fnt;

		HEFFECT snd;

		float x, y;
		float dx, dy;

		float speed;
		float friction;

};

#endif // RCORE_H_INCLUDED
